package io;

import java.io.*;

/**
 * 使用缓冲字符输入流BufferedReader按行读取字符串
 * 内部默认维护一个8192场的char数组, 可以块读文本数据保证读取效率
 * 提供了readLine()方法可以按行读取字符串
 */
public class BrDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("./src/io/BrDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        /*
         * readLine()方法按行读取字符串
         * 1)内部实现:
         *  首先第一次调用read()方法时, 会一次性读取8192个字符存入内部数组中
         *  然后从数组第一个字符开始读取, 知道遇到\n换行符位置, 会将读取到的内容以一个字符串形式返回
         *  2)返回的结果:
         *      2.1)如果读到\n换行符,返回一行字符串
         *      2.2)杜鳌空行, 则返回空字符串
         *      2.3)度到了末尾, 则返回null
         */
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    }
}
